package com.gitee.wsl.text.regex.sample

val Regex.Companion.ID_CARD_15: Regex
    get() = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$".toRegex()

val Regex.Companion.ID_CARD_18: Regex
    get() = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9Xx])$".toRegex()

fun String.isIDCard15(): Boolean =
    Regex.ID_CARD_15.matches(this)

fun String.isIDCard18(): Boolean =
    Regex.ID_CARD_18.matches(this)

/**
 * 邮编，兼容港澳台
 */
val Regex.Companion.ZIP_CODE: Regex
    get() = "^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[0-7]|6[0-7]|7[0-5]|8[0-9]|9[0-8])\\d{4}|99907[78]$".toRegex()

/**
 * 统一社会信用代码
 * <pre>
 * 第一部分：登记管理部门代码1位 (数字或大写英文字母)
 * 第二部分：机构类别代码1位 (数字或大写英文字母)
 * 第三部分：登记管理机关行政区划码6位 (数字)
 * 第四部分：主体标识码（组织机构代码）9位 (数字或大写英文字母)
 * 第五部分：校验码1位 (数字或大写英文字母)
</pre> *
 */
val Regex.Companion.CREDIT_CODE: Regex
    get() = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$".toRegex()